# ---
# 0 ANALISE COM DDD 
# ---


# Pacotes
library(tidyverse)
library(gridExtra)
library(stargazer)
library(here)
library(lfe)


# Configuracoes e funcoes
source(here("utils", "configs.R"))
source(here("utils", "funcoes.R"))


# Carrega os dados
load(here("data", "br_transfers_mun_1997_2016.Rda"))


# RESULTADOS GERAIS ------------------------------------------------------------


# Tabela - Efeito do alinhamento partidario, 1997-2016
pooled <- felm(transfers_pc ~ align_party|0|0|cod_ibge, data = base, exactDOF = T)
did <- felm(transfers_pc ~ align_party|mun_term_min + minis_year|0|cod_ibge, data = base, exactDOF = T)
ddd <- felm(transfers_pc ~ align_party|mun_term_min + minis_year + mun_year|0|cod_ibge, data = base, exactDOF = T)
    

stargazer(pooled, did, ddd, type = "html", omit = "Constant", out = here("outputs", "tab_resultados_gerais.html"),
          title = "Efeito do alinhamento partidário entre ministros e prefeitos sobre as transferências ministeriais recebidas pelos municípios, 1997-2016",
          label = "tab:cap1_resultados_gerais", out.header = F,
          keep.stat = "n", header = F, digits = 2, 
          dep.var.labels = "Reais per capita",
          covariate.labels = "Alinhamento ministerial",
          column.labels = c("Pooled", "DiD", "DDD"),
          report = "vc*s",  star.cutoffs = 0.05, star.char = "*",
          notes = "\\parbox[t]{11.3cm}{\\footnotesize Nota: \\textsuperscript{*} P-valor < 0.05. A variável dependente indica Reais per capita transferidos de cada ministério para os municípios brasileiros por ano. Os modelos (2) e (3) reportam o efeito causal médio do alinhamento partidário entre ministros e prefeitos sobre as transferências ministeriais recebidas pelos municípios usando desenhos de diferença-em-diferenças e de triplas-diferenças, respectivamente. Erros-padrão robustos com \\textit{cluster} por município entre parênteses.}",
          notes.append = F,
          dep.var.caption = "Variável Dependente", style = "apsr", notes.align = "l",
          add.lines = list(c("EF Ministério-município-mandato", c("", "X", "X")),
                           c("EF Ministério-ano", c("", "X", "X")),
                           c("EF Município-ano", c("", "", "X")),
                           c("Municípios", 
                             length(unique(pooled$clustervar$cod_ibge)), 
                             length(unique(did$clustervar$cod_ibge)), 
                             length(unique(ddd$clustervar$cod_ibge)))))


# ENDOGENEIDADE: OUTROS MODELOS ------------------------------------------------


# Tabela - Efeito do alinhamento partidario , 1997-2016
same_part <- base %>%
  group_by(ministry, cod_ibge, term) %>%
  summarise(partido = unique(party)) %>%
  arrange(ministry, cod_ibge, term) %>%
  group_by(ministry, cod_ibge) %>%
  mutate(same = ifelse(lag(partido) == partido, 1, 0)) %>%
  ungroup() %>%
  filter(same == 1) %>%
  select(ministry, cod_ibge, term, same)
  
same_did <- base %>%
  left_join(same_part) %>%
  filter(same == 1) %>%
  felm(transfers_pc ~ align_party|mun_term_min+minis_year|0|cod_ibge, data = ., exactDOF = T)

same_ddd <- base %>%
  left_join(same_part) %>%
  filter(same == 1) %>%
  felm(transfers_pc ~ align_party|mun_term_min+minis_year+mun_year|0|cod_ibge, data = ., exactDOF = T)
rm(same_part)

less10_did <- base %>%
  group_by(cod_ibge) %>%
  filter(sum(population > 10000, na.rm = T) == 0) %>%
  ungroup() %>%
  felm(transfers_pc ~ align_party|mun_term_min+minis_year|0|cod_ibge, data = ., exactDOF = T)

less10_ddd <- base %>%
  group_by(cod_ibge) %>%
  filter(sum(population > 10000, na.rm = T) == 0) %>%
  ungroup() %>%
  felm(transfers_pc ~ align_party|mun_term_min+minis_year+mun_year|0|cod_ibge, data = ., exactDOF = T)


stargazer(same_did, less10_did, same_ddd, less10_ddd, type = "html", omit = "Constant", out = here("outputs", "tab_checks.html"),
          title = "Efeito do alinhamento ministerial sobre as transferências recebidas pelos municípios: Robustez",
          label = "tab:cap1_checks", out.header = F,
          keep.stat = "n", header = F, digits = 2, 
          covariate.labels = "Alinhamento ministerial",
          column.labels = c("Part. reeleito", "10 mil < Hab.", "Part. reeleito", "10 mil < Hab."),
          report = "vc*s",  star.cutoffs = 0.05, star.char = "*",
          notes = "\\parbox[t]{14.3cm}{\\footnotesize Nota: \\textsuperscript{*} P-valor < 0.05. A variável dependente indica Reais per capita transferidos de cada ministério para os municípios brasileiros por ano. Os modelos (2) e (3) reportam o efeito causal médio do alinhamento partidário entre ministros e prefeitos sobre as transferências ministeriais recebidas pelos municípios usando desenhos de diferença-em-diferenças e de triplas-diferenças, respectivamente. Erros-padrão robustos com \\textit{cluster} por município entre parênteses.}",
          notes.append = F,
          dep.var.caption = "Variável Dependente", style = "apsr", notes.align = "l",
          add.lines = list(c("EF Ministério-município-mandato", c("X", 4)),
                           c("EF Ministério-ano", rep("X", 4)),
                           c("EF Município-ano", c("", "", "X", "X")),
                           c("Municípios", 
                             length(unique(same_did$clustervar$cod_ibge)), 
                             length(unique(less10_did$clustervar$cod_ibge)), 
                             length(unique(same_ddd$clustervar$cod_ibge)),
                             length(unique(less10_ddd$clustervar$cod_ibge))
                             )))



# HETEROGENEIDADE --------------------------------------------------------------


# Grafico - Efeito por status na coalizao
coal <- base %>%
  mutate(partido = case_when(
    
    minister_party %in% c("Pt", "PSDB", "Pt / PSDB", "PSDB / Pt") ~ "Presidência",
    TRUE ~ "Coalizão"
  )) %>%
  felm(transfers_pc ~ align_party + align_party:partido | mun_term_min + minis_year + mun_year | 0 | cod_ibge, data = ., exactDOF = T) %>%
  marg_felm("Coalizão", "align_party:partido") %>%
  mutate(tipo = "DDD") %>%
  bind_rows(
    base %>%
      mutate(partido = case_when(
        
        minister_party %in% c("Pt", "PSDB", "Pt / PSDB", "PSDB / Pt") ~ "Presidência",
        TRUE ~ "Coalizão"
      )) %>%
      felm(transfers_pc ~ align_party + align_party:partido | mun_term_min + minis_year | 0 | cod_ibge, data = ., exactDOF = T) %>%
      marg_felm("Coalizão", "align_party:partido") %>%
      mutate(tipo = "DiD")
  ) %>%
  ggplot(aes(x = reorder(vars, coef), y = coef, ymax = ci_up, ymin = ci_low, shape = tipo, group = tipo)) +
  geom_pointrange(size = tam_ponto, fatten = fatten, position = position_dodge(width = 0.4)) +
  geom_hline(yintercept = 0, linetype = 2) +
  labs(x = " ", y = "\nEfeito causal médio (Reais per capita)", shape = NULL) +
  coord_flip() +
  theme_classic(base_size = tam_fonte, base_family = fonte) +
  theme(axis.text = element_text(color = "black"),
        axis.title = element_text(size = tam_leg),
        plot.subtitle = element_text(size = tam_leg + 1),
        legend.position = "bottom")

ggsave(here("outputs", "plot_coalizao.pdf"), width = largura, height = altura, device = cairo_pdf, units = "cm", plot = coal) # Textwidth 15.7


# Grafico - Efeito por presidente
presidente <- felm(transfers_pc ~ align_party + align_party:president | mun_term_min + minis_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
  marg_felm("Dilma I", "align_party:president") %>%
  mutate(tipo = "DiD") %>%
  bind_rows(
    felm(transfers_pc ~ align_party + align_party:president | mun_term_min + minis_year + mun_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
      marg_felm("Dilma I", "align_party:president") %>%
      mutate(tipo = "DDD")
  ) %>%
  ggplot(aes(x = reorder(vars, coef), y = coef, ymax = ci_up, ymin = ci_low, shape = tipo, group = tipo)) +
  geom_pointrange(size = tam_ponto, fatten = fatten, position = position_dodge(width = 0.4)) +
  geom_hline(yintercept = 0, linetype = 2) +
  labs(x = " ", y = "\nEfeito causal médio (Reais per capita)", shape = NULL) +
  coord_flip() +
  theme_classic(base_size = tam_fonte, base_family = fonte) +
  theme(axis.text = element_text(color = "black"),
        axis.title = element_text(size = tam_leg),
        plot.subtitle = element_text(size = tam_leg + 1),
        legend.position = "bottom")

ggsave(here("outputs", "plot_presidencia.pdf"), width = largura, height = altura + 2, device = cairo_pdf, units = "cm", plot = presidente) # Textwidth 15.7


# Grafico - Efeito por ministerio
pastas <- felm(transfers_pc ~ align_party + align_party:ministry | 
       minis_mun + minis_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
  marg_felm("Agricultura", "align_party:ministry") %>%
  mutate(tipo = "DiD") %>%
  bind_rows(
    
    felm(transfers_pc ~ align_party + align_party:ministry | 
           minis_mun + minis_year + mun_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
      marg_felm("Agricultura", "align_party:ministry") %>%
      mutate(tipo = "DDD")
  ) %>%
  ggplot(aes(x = reorder(vars, coef), y = coef, ymax = ci_up, ymin = ci_low, shape = tipo, group = tipo)) +
  geom_pointrange(size = tam_ponto, fatten = fatten, position = position_dodge(width = 0.6)) +
  geom_hline(yintercept = 0, linetype = 2) +
  coord_flip() +
  labs(x = NULL, y = "\nEfeito causal médio (Reais per capita)", shape = NULL) +
  scale_y_continuous(breaks = seq(-1, 6.5, by = 1)) +
  theme_classic(base_size = tam_fonte, base_family = fonte) +
  theme(axis.text = element_text(color = "black"),
        axis.title = element_text(size = tam_leg))

ggsave(here("outputs", "plot_ministerios.pdf"), width = largura + 1, height = altura + 7, device = cairo_pdf, units = "cm", plot = pastas) # Textwidth 15.7



# TIMMING DA INFLUENCIA MINISTERIAL --------------------------------------------


# Grafico -  Efeito do alinhamento ministerial por ano do ciclo eleitoral
ciclo <- felm(transfers_pc ~ align_party + align_party:election_year | 
                mun_term_min + minis_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
  marg_felm("Eleição Municipal", "align_party:election_year") %>%
  mutate(tipo = "DiD") %>%
  bind_rows(
    
    felm(transfers_pc ~ align_party + align_party:election_year | 
           mun_term_min + minis_year + mun_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
      marg_felm("Eleição Municipal", "align_party:election_year") %>%
      mutate(tipo = "DDD")
  ) %>%
  ggplot(aes(x = reorder(vars, coef), y = coef, ymax = ci_up, ymin = ci_low, shape = tipo, group = tipo)) +
  geom_pointrange(size = tam_ponto, fatten = fatten, position = position_dodge(width = 0.4)) +
  geom_hline(yintercept = 0, linetype = 2) +
  labs(x = " ", y = "\nEfeito causal médio (Reais per capita)", shape = NULL) +
  coord_flip() +
  theme_classic(base_size = tam_fonte, base_family = fonte) +
  theme(axis.text = element_text(color = "black"),
        axis.title = element_text(size = tam_leg),
        plot.subtitle = element_text(size = tam_leg + 1),
        legend.position = "bottom")


ggsave(here("outputs", "plot_ciclos.pdf"), width = largura, height = altura + 1, device = cairo_pdf, units = "cm", plot = ciclo) # Textwidth 15.7


# ENDOGENEIDADE E INFLUENCIA PRESIDENCIAL --------------------------------------


# Grafico - Leads no tratamento
teste_press <- felm(transfers_pc ~ align_party + align_party_lead + align_party_lead2 + align_party_lead3 + align_party_lead4 | mun_term_min + minis_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
  did_coef(c(1, 0, -1, -2, -3), 1:5) %>%
  mutate(teste = "DiD") %>%
  bind_rows(
    
    felm(transfers_pc ~ align_party + align_party_lead + align_party_lead2 + align_party_lead3 + align_party_lead4 | mun_term_min + minis_year + mun_year | 0 | cod_ibge, data = base, exactDOF = T) %>%
      did_coef(c(1, 0, -1, -2, -3), 1:5) %>%
      mutate(teste = "DDD")
  ) %>%
  ggplot(aes(x = grupos, y = coef, ymax = ci_up, ymin = ci_low, group = teste, shape = teste)) +
  geom_pointrange(size = tam_ponto, fatten = fatten, position = position_dodge(width = 0.4)) +
  geom_hline(yintercept = 0, linetype = 2) +
  geom_vline(xintercept = 0.5, linetype = 3) +
  #scale_y_continuous(limits = c(-1.3, 2)) +
  labs(x = "\nAnos relativos ao alinhamento (t = 0)", 
       y = "\nEfeito causal médio\n(Reais per capita)",
       shape = NULL) +
  theme_classic(base_size = tam_fonte, base_family = fonte) +
  theme(axis.text = element_text(color = "black"),
        axis.title = element_text(size = tam_leg),
        legend.position = "bottom"
        )

ggsave(here("outputs", "leads_tratamento.pdf"), width = 14.8, height = 9, device = cairo_pdf, units = "cm", plot = teste_press) # Textwidth 15.7


# Proximo script
rm(list = ls())


